<?php
class ControllerModuleTopMenu extends Controller
{
    private $error = array();

    public function index()
    {
        $this->load->language('module/topMenu');
        $this->load->model('module/topMenu');
        $this->load->model('setting/setting');
        $this->load->model('design/layout');
        $this->template = 'module/TopMenu.tpl';

        $layouts=$this->model_design_layout->getLayouts();

        foreach($layouts as $key=>$value){
            $layouts[$key]['checked']=false;
            $layouts[$key]['layout_position']=0;
        }

        if($selectedLayouts=$this->model_module_topMenu->getAll()){
            foreach($selectedLayouts as $layout){
                foreach($layouts as $key=>$value){
                    if($value['layout_id']==$layout['layout_id']){
                        $layouts[$key]['checked']=true;
                        $layouts[$key]['layout_position']=$layout['layout_position'];
                    }
                }
            }
        }

        if(($this->request->server['REQUEST_METHOD']=='POST') && $this->validate()){
            if(isset($this->request->post['layout']) && $this->request->post['layout']){
                //echo '<pre>'; print_r($this->request->post['layout']); exit;
                foreach($this->request->post['layout'] as $key=>$value){
                    $id=0;
                    if(isset($value['layout_id'])){
                        if(!$selectedLayouts){
                            $this->model_module_topMenu->save(array('layout_id'=>$value['layout_id'], 'layout_position'=>$value['layout_position']));
                        }else{
                            foreach($selectedLayouts as $layout){
                                if($value['layout_id']==$layout['layout_id']){
                                    $this->model_module_topMenu->update(array(
                                        'link_id'=>$layout['link_id'],
                                        'layout_id'=>$value['layout_id'],
                                        'layout_position'=>$value['layout_position'],
                                    ));
                                    $id=$layout['link_id'];
                                }
                            }
                            if(!$id) $this->model_module_topMenu->save(array('layout_id'=>$value['layout_id'], 'layout_position'=>$value['layout_position']));
                        }
                    }else{
                        foreach($selectedLayouts as $layout){
                            if($key==$layout['layout_id']){
                                $this->model_module_topMenu->delete($key);
                            }
                        }
                    }
                }
            }

            $this->model_setting_setting->editSetting('topMenu', $this->request->post);
            $this->session->data['success'] = $this->language->get('text_success');
            $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
        }

        $this->data['layouts_title'] = $this->language->get('layouts_title');
        $this->data['heading_title'] = $this->language->get('heading_title');
        $this->data['text_enabled'] = $this->language->get('text_enabled');
        $this->data['text_disabled'] = $this->language->get('text_disabled');
        $this->data['text_content_top'] = $this->language->get('text_content_top');
        $this->data['text_content_bottom'] = $this->language->get('text_content_bottom');
        $this->data['text_column_left'] = $this->language->get('text_column_left');
        $this->data['text_column_right'] = $this->language->get('text_column_right');
        $this->data['text_header'] = $this->language->get('text_header');
        $this->data['layout_links_title'] = $this->language->get('layout_links_title');
        $this->data['layout_links_position'] = $this->language->get('layout_links_position');

        $this->data['entry_layout'] = $this->language->get('entry_layout');
        $this->data['entry_position'] = $this->language->get('entry_position');
        $this->data['entry_count'] = $this->language->get('entry_count');
        $this->data['entry_status'] = $this->language->get('entry_status');
        $this->data['entry_sort_order'] = $this->language->get('entry_sort_order');

        $this->data['button_save'] = $this->language->get('button_save');
        $this->data['button_cancel'] = $this->language->get('button_cancel');
        $this->data['button_add_module'] = $this->language->get('button_add_module');
        $this->data['button_remove'] = $this->language->get('button_remove');

        $this->data['breadcrumbs'][] = array(
            'text'      => $this->language->get('text_home'),
            'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
            'separator' => false
        );

        $this->data['breadcrumbs'][] = array(
            'text'      => $this->language->get('heading_title'),
            'href'      => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
            'separator' => ' :: '
        );

        $this->data['breadcrumbs'][] = array(
            'text'      => $this->language->get('heading_title'),
            'href'      => $this->url->link('module/category', 'token=' . $this->session->data['token'], 'SSL'),
            'separator' => ' :: '
        );

        $this->data['action'] = $this->url->link('module/topMenu', 'token=' . $this->session->data['token'], 'SSL');
        $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');

        $this->data['modules'] = array();

        if (isset($this->request->post['topMenu_module'])) {
            $this->data['modules']=$this->request->post['topMenu_module'];
        } elseif ($this->config->get('topMenu_module')) {
            $this->data['modules']=$this->config->get('topMenu_module');
        }

        $this->data['layouts']=$layouts;

        $this->children = array(
            'common/header',
            'common/footer'
        );

        $this->response->setOutput($this->render());

    }

    private function validate() {
        if (!$this->user->hasPermission('modify', 'module/topMenu')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }

        if (!$this->error) {
            return true;
        } else {
            return false;
        }
    }
}